Como configurar el prompt de Git Bash para que se muestre de manera personalizada.
La configuración deja el prompt así:
Lo primero que tenemos que hacer es editar el archivo de configuración, que se encuentra en:
C:\Users\manuel.bascoy\AppData\Local\Programs\Git\etc\profile.d\git-prompt.sh
En este archivo de configuración introducimos la siguiente configuración:
if test -f /etc/profile.d/git-sdk.sh
then
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
TITLEPREFIX=$MSYSTEM
fi
if test -f ~/.config/git/git-prompt.sh
then
. ~/.config/git/git-prompt.sh
else
PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[32m\]' # change to green
PS1="$PS1"'\u@\h ' # user@host
PS1="$PS1"'\[\033[33m\]' # change to brownish yellow
PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[36m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function
PS1="$PS1"'\n'
PS1="$PS1"'`/c/Users/manuel.bascoy/AppData/Local/Programs/Git/etc/profile.d/custom-prompt.sh`' # bash function
fi
fi
PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[31m\]' # change color
PS1="$PS1"'_> ' # prompt: always >
PS1="$PS1"'\[\033[0m\]' # change color
fi
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
# Evaluate all user-specific Bash completion scripts (if any)
if test -z "$WINELOADERNOEXEC"
then
for c in "$HOME"/bash_completion.d/*.bash
do
# Handle absence of any scripts (or the folder) gracefully
test ! -f "$c" ||
. "$c"
done
fi
Hay que tener en cuenta la linea que tiene la ruta del script que ejecuta el git log:
/c/Users/manuel.bascoy/AppData/Local/Programs/Git/etc/profile.d/custom-prompt.sh
Y el contenido del script es el siguiente:
git log 2>/dev/null| head -n 4 | grep -v Merge | tr '\n' ' ' | awk '{ printf " \033[1;33m("$4 ") \033[1;31m(" $2 ") \033[35m{" $(NF-3) "-" $(NF-4) "}\033[1;34m[" $(NF-2) "]"}'
Modificando el git-prompt.sh y añadiendo el custom-prompt.sh ya tendríamos la consola de Git Bash personalizada
Si queremos conseguir el mismo efecto en el bash de linux solo tenemos que colocar el siguiente código en el archivo ~/.bashrc:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
parse_git_log() {
COMMIT_USER=$(git log 2> /dev/null | head -n 4 | grep -v Merge | tr '\n' ' ' | awk -F "[:<]" '{print $2}')
git log 2> /dev/null | head -n 4 | grep -v Merge | tr '\n' ' ' | awk -v env_var="$COMMIT_USER" '{ printf "\033[1;33m{"env_var"} \033[1;31m(" $2 ") \033[35m{" $(NF-3) "-" $(NF-4) "}\033[1;34m[" $(NF-2) "]"}'
}
export PS1="╭─\e[45m\e[30m\u\e[1;32m@\h\e[40m \[\e[32m\]\w \e[1;34m\$(parse_git_branch)\[\e[00m\]\n|\$(parse_git_log)\n╰─>\[\e[00m\] "
Script antiguo:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
parse_git_log() {
git log 2>/dev/null| head -n 4 | grep -v Merge | tr '\n' ' ' | awk '{ printf " \033[1;33m("$4 ") \033[1;31m(" $2 ") \033[35m{" $(NF-3) "-" $(NF-4) "}\033[1;34m[" $(NF-2) "]"}'
}
export PS1="\u@\h \[\e[32m\]\w \[\e[91m\]\$(parse_git_branch)\[\e[00m\]\n\$(parse_git_log)\n_>\[\e[00m\] "
Git | Bash | prompt